package fr.demos.cinepantin.controleur;

import java.io.IOException;
import java.util.ArrayList;

import javax.inject.Inject;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import fr.demos.cinepantin.AdressePostal;
import fr.demos.cinepantin.Client;
import fr.demos.cinepantin.dao.DaoClient;
import fr.demos.cinepantin.dao.interfac.ClientDao;
import fr.demos.cinepantin.enumerate.Adresse;
import fr.demos.cinepantin.exception.DaoExceptions;

/**
 * Servlet implementation class SaisirAdressePostal
 */
@WebServlet("/SaisirAdressePostal")
public class SaisirAdressePostal extends HttpServlet {
	private static final long serialVersionUID = 1L;
   @Inject
   @DaoClient
	private ClientDao clientdao ;   
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SaisirAdressePostal() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	
	
	Integer idAdresse = null;	
	Adresse adresse = null ;
	String ville = null ;
	String codepostal = null ;
	String numAppartement = null ;
	String etage = null ;
	String numTelFixe = null ;
	String type_adressePostal = null ;
	
	
	
		// Afficher client
	RequestDispatcher rd;
	// recupere le idClient pour enregistrer l'adresse
	
	int idClient = Integer.parseInt(request.getParameter("IdClient"));
	Client client;
	
	try{
		client = clientdao.getClientById(idClient);
		request.setAttribute("client", client);
	} catch (DaoExceptions e){
		request.setAttribute("erreurPage", "une erreur est survenue");
		e.printStackTrace();
	}
	
	// liste des erreurs
	ArrayList<String> erreurs = new ArrayList<>();
	
	try {
		adresse = Adresse.valueOf(request.getParameter("adresse"));
	} catch (NullPointerException e) {
		e.printStackTrace();
		request.setAttribute("erreurPage", "choissisiez votre type d'adresse");

	}

    String ligneAdresse1 = request.getParameter("ligneAdresse1") ;
     if(ligneAdresse1 == null || ligneAdresse1.equals("")){
			erreurs.add("Addresse incorrecte !!");
     }
     

String ligneAdresse2 = request.getParameter("ligneAdresse2") ;

try {
	codepostal = request.getParameter("codepostal") ;
} catch (Exception e) {
	e.printStackTrace();
	request.setAttribute("erreurPage", "code postale incorrecte");

}

try {
	ville = request.getParameter("ville");
} catch (Exception e) {
	e.printStackTrace();
	request.setAttribute("erreurPage", "ville incorrecte");

}

try {
	numAppartement = request.getParameter("numAppartement");
} catch (Exception e) {
	e.printStackTrace();
	request.setAttribute("erreurPage", "numero appartement incorrecte");
}

 etage = request.getParameter("etage");

try {
	numTelFixe = request.getParameter("numTelFixe");
} catch (Exception e) {
	e.printStackTrace();
	request.setAttribute("erreurPage", "Telephone incorrecte");

}

 type_adressePostal = request.getParameter("type_adressePostal");

    boolean adrFacturation = false;
    
	if (type_adressePostal.equals("adrFacturation")) {
		adrFacturation = true;
	}
	
    boolean adrLivraison = false ;

	if (type_adressePostal.equals("adrLivraison")) {
		adrLivraison = true;
	}
	
	if (erreurs.size() > 0) {
		request.setAttribute("erreurs", erreurs);
     	request.setAttribute("adresse",adresse);
		request.setAttribute("ligneAdresse1", ligneAdresse1);
		request.setAttribute("ligneAdresse2", ligneAdresse2);
        request.setAttribute("codepostal",codepostal);
 		request.setAttribute("ville", ville);
    	request.setAttribute("numAppartement", numAppartement);
    	request.setAttribute("type_adressePostal", type_adressePostal);

		request.setAttribute("Création non effectuée dans la base ", erreurs);
		request.setAttribute("page", "/inscription.jsp");
	}else{
		
		AdressePostal adressePostal;
		adressePostal = new AdressePostal(idAdresse, ligneAdresse1, ligneAdresse2, adresse, codepostal, ville, numAppartement, etage, numTelFixe, adrFacturation, adrLivraison);

	}
	request.setAttribute("page", "/inscription.jsp");
	rd = request.getRequestDispatcher("/page.jsp");
	rd.forward(request, response);
	
	}
	
	
	
	

	}

	
	
